#ifndef __OgreURLArchiveFactory_H__
#define __OgreURLArchiveFactory_H__
#pragma once

// Include stuff
#include "OgreURLPrerequisites.h"
#include <OgreArchiveFactory.h>

namespace Ogre
{
	/**
	 * @brief Specialisation of ArchiveFactory for files located on internet
	 */
	class _OgreURLExport URLArchiveFactory : public ArchiveFactory
	{
	public:
		/**
		 * @brief Default constructor
		 */
		URLArchiveFactory();

		/**
		 * @brief Virtual destructor
		 */
		virtual ~URLArchiveFactory();

		/**
		 * @brief Overridden from FactoryObj::getType
		 * @copydoc FactoryObj::getType
		 */
		const String& getType() const;

		/**
		 * @brief Overridden from FactoryObj::createInstance
		 * @copydoc FactoryObj::createInstance
		 */
		Archive* createInstance( const String& name );

		/**
		 * @brief Overridden from FactoryObj::destroyInstance
		 * @copydoc FactoryObj::destroyInstance
		 */
		void destroyInstance( Archive* arch );
	};

} // end of namespace Ogre

#endif // include guard, end of #ifndef __OgreURLArchiveFactory_H__
